1
Les pièges de la gestion manuelle de la mémoire
AI013Lesson 5
00:00

Gestion manuelle de la mémoire via new et delete crée un contrat de responsabilité fragile "contrat de responsabilité". Le programmeur doit prédire parfaitement chaque chemin d'exécution, y compris les retours anticipés et les exceptions, afin de garantir que les ressources soient libérées. Cette approche est sujette à des défaillances systémiques.

Les défaillances systémiques

  • Le piège de fuite de mémoire : Dans une logique complexe (si-sinon, switch), omettre de coupler chaque new avec delete dégrade progressivement les performances du système.
  • Invalidation des pointeurs : Erreurs telles que Pointeurs pendus (accès à la mémoire après suppression) ou Double suppression déclenchent un comportement indéfini et des vulnérabilités de sécurité.
  • Sécurité des exceptions : Si une exception survient entre l'allocation et la désallocation, le delete est entièrement ignoré.
new char[]XRetour anticipé (fuite)XException (fuite)Défenseurs ()• std::unique_ptr• std::shared_ptr• std::weak_ptr

L'évolution de l' évolution

C++11/14 a repensé le <memory> en-tête pour abandonner les "pointeurs nus" au profit de modèles automatisés de possession qui imposent la sécurité au niveau du compilateur.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>